package com.wcs.exam.controller.biz.resp;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

@Accessors(chain = true)
@Data
public class QuestionDetailResp implements Serializable {

    @Serial
    private static final long serialVersionUID = -1947795579158919394L;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 目录ID
     */
    private Long categoryId;

    /**
     * 难度等级(1:简单、2:一般、3:困难)
     */
    private Integer difficultyLevel;

    /**
     * 题目类型(1:单选题、2:多选题、3:判断题、4:填空题、5:简答题)
     */
    private Integer questionType;

    /**
     * 题目内容
     */
    private String questionTitle;

    /**
     * 题目答案
     */
    private String questionAnswer;

    /**
     * 题目解析
     */
    private String questionAnalysis;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 创建时间
     */
    private LocalDateTime gmtCreate;

    /**
     * 修改时间
     */
    private LocalDateTime gmtModified;

    /*-------------------------------------------------- 拓展内容 --------------------------------------------------*/

    /**
     * 填空数
     */
    private Integer optionCount;

    /**
     * 题目答案ID
     */
    private List<Long> questionAnswerIds;

    /**
     * 题目选项
     */
    private List<Option> options;

    /**
     * 考试-题目选项-响应对象
     */
    @Data
    public static class Option implements Serializable {

        @Serial
        private static final long serialVersionUID = -3320306929445959508L;

        /**
         * 主键
         */
        private Long id;

        /**
         * 题目ID
         */
        private Long questionId;

        /**
         * 选项内容
         */
        private String optionContent;

        /**
         * 状态
         */
        private Integer status;

        /**
         * 排序
         */
        private Integer sort;

        /**
         * 创建时间
         */
        private LocalDateTime gmtCreate;

        /**
         * 修改时间
         */
        private LocalDateTime gmtModified;
    }
}
